package cn.anosi.service.base;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import cn.anosi.page.PageResponseBean;
import cn.anosi.page.Pager;

public interface BaseService<T> {
	/**
	 * 保存
	 * @param entity
	 * @return
	 */
	public T save(T entity);
	
	/**
	 * 根据id删除
	 * @param id
	 * @return
	 */
	int delete(Serializable id);
	
	/**
	 * 根据id查询
	 * @param id
	 * @return
	 */
	public T getById(Serializable id);
	
	/**
	 * 未删除的数据集合
	 * @return
	 */
	public List<T> list();
	
	/**
	 * 返回数据表格
	 * @param pager
	 * @return
	 */
	public PageResponseBean<T> list(Pager pager);
	
	/**
	 * 锁定 / 解锁
	 * @param id
	 * @param status
	 * @return
	 */
	public int lock(Serializable id, Integer status);
	
	/**
	 * 批量删除
	 * @param ids
	 * @return
	 */
	public int batcahDel(List ids);
	
	/**
	 * 批量添加
	 * @param list
	 * @return
	 */
	public int batchSave(ArrayList<T> list);
	
	/**
	 * 根据hql查询
	 * @param hql
	 * @param args
	 * @return
	 */
	public List<T> queryByHql(String hql, Object...args);
	
	/**
	 * 根据sql查询
	 * @param sql
	 * @param args
	 * @return
	 */
	public List<T> queryBySql(String sql, Object...args);
	
	/**
	 * 根据sql语句更新
	 * @param sql
	 * @param args
	 */
	public void updateBySql(String sql,Object...args);
	
	/**
	 * 根据hql 更新
	 * @param hql
	 * @param args
	 */
    public void updateByHql(String hql,Object...args);
    
}
